<?php

namespace app\common\model;

use think\Model;

/**
 * 用户名称
 * Class UserModel
 * @package app\common\model
 */
class UserModel extends Model
{
    protected $name = 'user';

    /**
     * 获取列表
     * @param $params
     * @param int $rows
     * @param int $page
     * @param string $fields
     * @return array
     * @throws \think\exception\DbException
     */
    public function getLists($params, $rows = 20, $page = 1, $fields = '*')
    {
        // 条件搜索
        if (!empty($params['where'])) {
            $this->where($params['where']);
        } else {
            if (!empty($params['keyword'])) {
                switch ($params['type']) {
                    case 1 :
                        $this->where(['nickname' => ['LIKE', '%' . $params['keyword'] . '%']]);
                        break;
                    case 2 :
                        $this->where(['nickname' => ['LIKE', '%' . $params['keyword'] . '%']]);
                        break;
                }
            }
            // 时间范围查询
            if (!empty($params['start_time'])) {
                $this->where('createtime', '>=', $params['start_time']);
            }
            if (!empty($params['end_time'])) {
                $this->where('createtime', '<=', $params['end_time']);
            }
        }

        // 排序
        $order  = !empty($params['order']) ? $params['order'] : 'id DESC';
        $result = $this
            ->field($fields)
            ->order($order)
            ->paginate($rows, false, [
                'page' => $page
            ]);

        $arr = [
            'list'      => [],
            'total'     => 0,
            'page'      => 1,
            'pageSize'  => $rows,
            'totalSize' => 0
        ];
        // 格式化数据信息
        if (!$result->isEmpty()) {
            $arr = [
                'list'      => $result->items(),
                'total'     => $result->total(),
                'page'      => $result->currentPage(),
                'pageSize'  => $result->listRows(),
                'totalSize' => $result->lastPage()
            ];
        }

        return $arr;
    }

    /**
     * 获取某条记录
     * @param $where
     * @return array|bool|false|\PDOStatement|string|Model
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function getItem($where, $fields = '*')
    {
        if (empty($where)) {
            $this->error = '参数不正确。';
            return false;
        }
        if (floor($where) > 0) {
            $where = ['id' => $where];
        }

        return $this->where($where)->field($fields)->find();
    }
}